#ifndef __MYLED_H__
#define __MYLED_H__
#define  CNAME  "myled"

typedef struct {
        volatile unsigned int MODER;   // 0x00
        volatile unsigned int OTYPER;  // 0x04
        volatile unsigned int OSPEEDR; // 0x08
        volatile unsigned int PUPDR;   // 0x0C
        volatile unsigned int IDR;     // 0x10
        volatile unsigned int ODR;     // 0x14
        volatile unsigned int BSRR;    // 0x18
        volatile unsigned int LCKR;    // 0x1C 
        volatile unsigned int AFRL;    // 0x20 
        volatile unsigned int AFRH;    // 0x24
        volatile unsigned int BRR;     // 0x28
        volatile unsigned int res;
        volatile unsigned int SECCFGR; // 0x30
}gpio_t;

#define  RCC_PHY_ADDR      0x50000A28

#define  GPIOE_BASE_ADDR   0x50006000
#define  GPIOF_BASE_ADDR   0x50007000

#define  LED_ON      _IOW('L',1,int)   
// 01  00_0000_0000_0100  0100_1100 0000_0001

#define  LED_OFF     _IOW('L',0,int)   
// 01  00_0000_0000_0100  0100_1100 0000_0000

// 数组属于一个构造类型， 新的类型为：数据类型 [元素个数]
// char buf[128];   // 定义一个字符的数组
// 将名字去掉就是你的数据类型:  char [128]
// typedef  char buf_t[128];    此时变量的名字就是新的数据类型
// 使用新的类型定义变量 ： buf_t  buf;  <===> char buf[128];
#define  UACCESS_STRING  _IOW('S', 0, char [128])

// 从命令码中获取第三个参数的大小
#define GET_CMD_SIZE(code)    ((code >> 16) & 0x3FFF)

#endif // __MYLED_H__
